﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.Linq;

namespace Loja.orders
{
    public partial class payment : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string scr = @"$(document).ready(function () {
                                $('.endPedido').button({ icons: { primary: 'ui-icon-circle-check'}});        
                            });";
            ScriptManager.RegisterClientScriptBlock(Page, Page.GetType(), "scr", scr, true);
            if (!IsPostBack)
            {
                this.carregaDados();
            }
        }

        protected void carregaDados()
        {
            Pedido pedido = (Pedido)Session["Carrinho"];
            if (pedido != null)
            {
                using (LojaChocolateDCDataContext dc = new LojaChocolateDCDataContext())
                {
                    var itens = (from item in pedido.PedItes
                                 select new
                                 {
                                     proVal = item.IteVal,
                                     proValTot = (item.IteVal * item.IteQtd),
                                     iteQtd = item.IteQtd,
                                     proId = item.ProID,
                                     ptmId = item.PtmID
                                 }).ToList();
                    lblTotPed.Text = String.Format("{0:c}", itens.Sum(i => i.proValTot));
                    rptCarrinho.DataSource = itens;
                    rptCarrinho.DataBind();


                    if (!String.IsNullOrEmpty(pedido.PedEntBai))
                    {
                        lblBairro.Text = pedido.PedEntBai;
                        lblCEP.Text = Convert.ToString(pedido.PedEntCEP);
                        var cid = (from item in dc.GetTable<Cidade>()
                                   where item.CidCod == pedido.PedEntCid
                                   select new { cidade = item.CidNom, estado = item.EstSig }).ToArray();
                        lblCidade.Text = cid[0].cidade;
                        lblEstado.Text = pedido.PedEntEst;
                        lblRua.Text = pedido.PedEntEnd + " nº " + pedido.PedEntNum.ToString();
                        lblComp.Text = pedido.PedEntCom;
                        rdbEntregar.Checked = true;
                    }
                    else
                    {
                        rdbRetiraLocal.Checked = true;
                    }
                }
            }
        }

        protected void btnFinalizar_Click(object sender, EventArgs args)
        {
            Pedido pedido = (Pedido)Session["Carrinho"];
            if (pedido != null)
            {
                pedido.CliID = ((Cliente)Session["Cliente"]).CliID;
                Session["Carrinho"] = pedido;
                pedido.PedDat = DateTime.Now;
                pedido.PedForPag = this.formaPagamento();
                if (rdbEntregar.Checked == true)
                {
                    pedido.PedRet = (char)Negocio.ModoRetirada.Entregar;
                }
                else if (rdbRetiraLocal.Checked == true)
                {
                    pedido.PedRet = (char)Negocio.ModoRetirada.Retirar;
                }
                pedido.PedSta = (char)Negocio.StatusPedido.Ativo;
                using (LojaChocolateDCDataContext dc = new LojaChocolateDCDataContext())
                {
                    try
                    {
                        Table<Pedido> tblPedido = dc.GetTable<Pedido>();
                        tblPedido.InsertOnSubmit(pedido);
                        dc.SubmitChanges();

                    }
                    catch (Exception erro)
                    {
                        throw new Exception(erro.Message);
                    }
                }

            }
            Response.Redirect(Page.ResolveUrl("~/../loja/customer/") + "showpedido.aspx?order=" + pedido.PedNum.ToString());
        }

        protected short formaPagamento()
        {
            if (rdbBoleto.Checked == true)
            {
                return (short)Negocio.ModoPagamento.Boleto;
            }
            else if (rdbCheque.Checked == true)
            {
                return (short)Negocio.ModoPagamento.Cheque;
            }
            else if (rdbDinheiro.Checked == true)
            {
                return (short)Negocio.ModoPagamento.Dinheiro;
            }
            else if (rdbPagSeg.Checked == true)
            {
                return (short)Negocio.ModoPagamento.Cartao;
            }
            else { return 0; }
        }

        protected void rptCarrinho_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            short _id = short.Parse(Convert.ToString(DataBinder.Eval(e.Item.DataItem, "proId")));
            short _ptmID = short.Parse(Convert.ToString(DataBinder.Eval(e.Item.DataItem, "ptmID")));
            Produto prod = new LojaChocolateDCDataContext().GetTable<Produto>().Where(i => i.ProID == _id).SingleOrDefault();
            //atribui valor na caixa de texto
            ((Label)e.Item.FindControl("lblQtde")).Text = Convert.ToString(DataBinder.Eval(e.Item.DataItem, "iteQtd"));
            //((Image)e.Item.FindControl("imgProduto")).ImageUrl = (prod.ProImgs[0].PmgLoc == null ? "" : prod.ProImgs[0].PmgLoc);
            ((Label)e.Item.FindControl("lblDescicao")).Text = prod.ProDes;
            ((Label)e.Item.FindControl("lblPeso")).Text = String.Format("{0:0.00}", prod.ProPes.Where(p => p.PtmID == _ptmID).Single().PtmPes) + " g.";
            ((HiddenField)e.Item.FindControl("hdProduto")).Value = Convert.ToString(_id);
            ((HiddenField)e.Item.FindControl("hdPeso")).Value = Convert.ToString(_ptmID);
            ((Label)e.Item.FindControl("lblValTot")).Text = String.Format("{0:c}", DataBinder.Eval(e.Item.DataItem, "proValTot"));
            ((Label)e.Item.FindControl("lblValUni")).Text = String.Format("{0:c}", DataBinder.Eval(e.Item.DataItem, "proVal"));
        }

    }
}